package pe.com.hermes.hermetic.web.controller.configuracion;

import pe.com.hermes.hermetic.beans.AuditBean;
import pe.com.hermes.hermetic.beans.CuentaBean;
import pe.com.hermes.hermetic.beans.PuntoBean;
import pe.com.hermes.hermetic.negocio.service.HermeticFacade;
import pe.com.hermes.hermetic.web.controller.base.IController;
import pe.com.hermes.hermetic.web.forms.HMF1002Form;
import pe.com.hermes.hermetic.web.forms.HMF2001Form;
import pe.com.hermes.hermetic.negocio.ultil.ConstantesHermetic;
import pe.com.hermes.hermetic.negocio.ultil.Util;

import pe.com.hermes.hermetic.web.controller.base.IWebOpciones;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.SessionAttributes;

@RequestMapping("/mostrarHWF1002.html")
@Controller
@SessionAttributes(value={"form","codOpci","desOpci"})
public class NumerosCuentaController implements IController{
    private Logger logger = Logger.getLogger(this.getClass());
    @Autowired
    private HermeticFacade servicioHermetic;
    
    @RequestMapping(method=RequestMethod.GET)
    protected String showForm(ModelMap model, HttpServletRequest request) throws Exception {

        HttpSession session = request.getSession(false);        
        if (session.getAttribute("usuario") == null)
            return FORM_SESSION_FINISH;

        List listaTransacciones = (List)session.getAttribute("listaMenu4");
        if (!Util.validaAccesoOpcion(listaTransacciones, 
                                     ConstantesHermetic.CONFIG_NUMEROS_CUENTA)) {
            return FORM_ACCESS_NULL_VIEW;
        }

        String cliente = (String)session.getAttribute("cliente");
        String sucursal = (String)session.getAttribute("sucursal");
        HMF1002Form form = new HMF1002Form();
        form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);
        try {
            form.setDesClienteBco("");
            String codOpci = IWebOpciones.NUM_CNTA;
            String desOpci = servicioHermetic.getDesOpci(codOpci, request);
            model.put("codOpci",codOpci);
            model.put("desOpci",desOpci);
            model.put(FORM_KEY,form);                        
            AuditBean auditBean = new AuditBean(NUM_CNTA);
            servicioHermetic.inseAudit(auditBean);
        } catch (Exception e) {
            e.printStackTrace();
            logger.error("Error en el proceso. "+ e);
            return FORM_ERROR_VIEW;
        }

        return FORM_CONF_NROS_CTA_VIEW;
    }

    @RequestMapping(params="accion=nueva")
    private String nueva (ModelMap model,@ModelAttribute(FORM_KEY) HMF1002Form form, HttpServletRequest request) throws Exception {    
    
        HttpSession session = request.getSession(false);        
        if (session.getAttribute("usuario") == null)
            return FORM_SESSION_FINISH;

        List listaTransacciones = (List)session.getAttribute("listaMenu4");
        if (!Util.validaAccesoOpcion(listaTransacciones, 
                                     ConstantesHermetic.CONFIG_NUMEROS_CUENTA)) {
            return FORM_ACCESS_NULL_VIEW;
        }       
        form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);
        try{
         //   int accionMapa = 6;
            form.setNcuenta(null);
            form.setCodigoReferencia("");
            form.setCodClienteBco(form.getCodClienteBco());
            form.setDesClienteBco(form.getDesClienteBco());
            String cliente = null;
            String clientegrupo = form.getGrupoCliente();
            form.setTcuenta("");
            form.setMoneda("");
            form.setReferencia("");
            String gene = request.getSession().getAttribute("general").toString();
            if (gene.equals("1")) {
                if (clientegrupo != null) {
                    cliente = form.getGrupoCliente();
                } else {
                    cliente = request.getSession().getAttribute("cliente").toString();
                }
            }
    
            else {
                cliente = request.getSession().getAttribute("sub_grupo").toString();
            }
            form.setCliente(cliente);
            String ClienteBco = form.getChkb();
            int y = ClienteBco.indexOf("-");
            String codClienteBco = ClienteBco.substring(0, y);
            String desCliente = ClienteBco.substring(y + 1);
            String general = (String)request.getSession().getAttribute("general");
            List listaCuentas = servicioHermetic.getMantenCuentas(general, codClienteBco, 
                                                        cliente, cliente, 
                                                        cliente, "0");
            if (listaCuentas != null) {
                //request.setAttribute("listaCuentas", listaCuentas);
                model.put("listaCuentas", listaCuentas);
            }
    
            List listaTipoCuenta = servicioHermetic.getTipoCuenta();
            //request.setAttribute("listaTipoCuenta",listaTipoCuenta);
            model.put("listaTipoCuenta",listaTipoCuenta);
            
            //List listaTipoUniMone = servicioHermetic.getTipoUniMone();
            List listaTipoUniMone = servicioHermetic.getTipoUniMoneClie(cliente);
            
            //request.setAttribute("listaTipoUniMone",listaTipoUniMone);
            model.put("listaTipoUniMone",listaTipoUniMone);
    
            List listaCodiRefer = servicioHermetic.getCodiRefer();
            //request.setAttribute("listaCodiRefer",listaCodiRefer);
            model.put("listaCodiRefer",listaCodiRefer);
    
            form.setChkTipo("1");    
    
            model.put(FORM_KEY,form);

        } catch (Exception e) {
            e.printStackTrace();
            return FORM_ERROR_VIEW;
        }
        return FORM_CONF_NROS_CTA_NUEVO_VIEW;
    }

    @RequestMapping(params="accion=busca")
    private String busca (ModelMap model,@ModelAttribute(FORM_KEY) HMF1002Form form, HttpServletRequest request) throws Exception {    
    
        HttpSession session = request.getSession(false);        
        if (session.getAttribute("usuario") == null)
            return FORM_SESSION_FINISH;

        List listaTransacciones = (List)session.getAttribute("listaMenu4");
        if (!Util.validaAccesoOpcion(listaTransacciones, 
                                     ConstantesHermetic.CONFIG_NUMEROS_CUENTA)) {
            return FORM_ACCESS_NULL_VIEW;
        }       
        form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);

        //int accionMapa = 1;
        form.setChkb(null);
        String cliente = (String)request.getSession().getAttribute("cliente");
        String sucursal = (String)request.getSession().getAttribute("sucursal");
        
        try {

            String desCliente = form.getDesClienteBco();
    
            List listadoClientes = servicioHermetic.getClientes(desCliente.toUpperCase());
            if (listadoClientes != null) {
                //request.setAttribute("listadoClientesB", listadoClientes);
                model.put("listadoClientesB", listadoClientes);
            }  
    
            model.put(FORM_KEY,form);

        } catch (Exception e) {
            e.printStackTrace();
            return FORM_ERROR_VIEW;
        }
        return FORM_CONF_NROS_CTA_BUSCA_VIEW;
    }
    
    @RequestMapping(params="accion=cuentas")
    private String cuentas (ModelMap model,@ModelAttribute(FORM_KEY) HMF1002Form form, HttpServletRequest request) throws Exception {    
    
        HttpSession session = request.getSession(false);        
        if (session.getAttribute("usuario") == null)
            return FORM_SESSION_FINISH;

        List listaTransacciones = (List)session.getAttribute("listaMenu4");
        if (!Util.validaAccesoOpcion(listaTransacciones, 
                                     ConstantesHermetic.CONFIG_NUMEROS_CUENTA)) {
            return FORM_ACCESS_NULL_VIEW;
        }       
        form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);

        //int accionMapa = 2;       
        String cliente = (String)request.getSession().getAttribute("cliente");
        String sucursal = (String)request.getSession().getAttribute("sucursal");

        String general = (String)request.getSession().getAttribute("general");

        // String codClienteBco = cliente form.getChk();
        String ClienteBco = form.getChkb();
        int y = ClienteBco.indexOf("-");
        String codClienteBco = ClienteBco.substring(0, y);
        String desCliente = ClienteBco.substring(y + 1);
        try {
            List listadoClientes = 
                servicioHermetic.getMantenCuentas(general, codClienteBco, 
                                                        cliente, cliente, 
                                                        cliente, "0");
            if (listadoClientes != null) {
                //request.setAttribute("listadoClienteCuenta", listadoClientes);
                model.put("listadoClienteCuenta", listadoClientes);
            }
            form.setDesClienteBco(desCliente);
            form.setCodClienteBco(codClienteBco);
    
            model.put(FORM_KEY,form);

        } catch (Exception e) {
            e.printStackTrace();
            return FORM_ERROR_VIEW;
        }
        return FORM_CONF_NROS_CTA_VIEW;
    }    
    
    @RequestMapping(params="accion=cambiar")
    private String cambiar (ModelMap model,@ModelAttribute(FORM_KEY) HMF1002Form form, HttpServletRequest request) throws Exception {    
    
        HttpSession session = request.getSession(false);        
        if (session.getAttribute("usuario") == null)
            return FORM_SESSION_FINISH;

        List listaTransacciones = (List)session.getAttribute("listaMenu4");
        if (!Util.validaAccesoOpcion(listaTransacciones, 
                                     ConstantesHermetic.CONFIG_NUMEROS_CUENTA)) {
            return FORM_ACCESS_NULL_VIEW;
        }       
        form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);

        //int accionMapa = 7;
        try {
            String cliente = null;
            String clientegrupo = form.getGrupoCliente();
            String gene = request.getSession().getAttribute("general").toString();
            if (gene.equals("1")) {
                if (clientegrupo != null) {
                    cliente = form.getGrupoCliente();
                } else {
                    cliente = request.getSession().getAttribute("cliente").toString();
                }
            } else {
                cliente = request.getSession().getAttribute("sub_grupo").toString();
            }

            String codClienteBco = form.getCodClienteBco();

            String data = request.getParameter("chk");
            int y = data.lastIndexOf("-");
            int x = data.indexOf("*");
            int z = data.indexOf("!");
            String cta = data.substring(0, y);
            String tipoCta = data.substring(y + 1, x);
            String tipoUni = data.substring(x + 1, z);
            String refe = data.substring(z + 1);

            form.setCodClienteBco(codClienteBco);
            form.setDesClienteBco(form.getDesClienteBco());
            form.setNcuenta(cta);
            form.setTcuenta(tipoCta);
            form.setMoneda(tipoUni);
            form.setReferencia(refe); 
            List listaTipoCuenta = servicioHermetic.getTipoCuenta();
            //request.setAttribute("listaTipoCuenta",listaTipoCuenta);
            model.put("listaTipoCuenta",listaTipoCuenta);
            
             //List listaTipoUniMone = servicioHermetic.getTipoUniMone();
            List listaTipoUniMone = servicioHermetic.getTipoUniMoneClie(cliente);
            //request.setAttribute("listaTipoUniMone",listaTipoUniMone);
            model.put("listaTipoUniMone",listaTipoUniMone);

            List listaCodiRefer = servicioHermetic.getCodiRefer();
            //request.setAttribute("listaCodiRefer",listaCodiRefer);
             model.put("listaCodiRefer",listaCodiRefer);
            
            form.setCliente(cliente);
    
            model.put(FORM_KEY,form);

        } catch (Exception e) {
            e.printStackTrace();
            return FORM_ERROR_VIEW;
        }
        return FORM_CONF_NROS_CTA_CAMBIAR_VIEW;
    }    

    @RequestMapping(params="accion=asignar")
    private String asignar (ModelMap model,@ModelAttribute(FORM_KEY) HMF1002Form form, HttpServletRequest request) throws Exception {    
    
        HttpSession session = request.getSession(false);        
        if (session.getAttribute("usuario") == null)
            return FORM_SESSION_FINISH;

        List listaTransacciones = (List)session.getAttribute("listaMenu4");
        if (!Util.validaAccesoOpcion(listaTransacciones, 
                                     ConstantesHermetic.CONFIG_NUMEROS_CUENTA)) {
            return FORM_ACCESS_NULL_VIEW;
        }       
        form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);
        //int accionMapa = 8;
        try {
            String cliente = null;
            String clientegrupo = form.getGrupoCliente();
            String gene = request.getSession().getAttribute("general").toString();
            if (gene.equals("1")) {
                if (clientegrupo != null) {
                    cliente = form.getGrupoCliente();
                } else {
                    cliente = request.getSession().getAttribute("cliente").toString();
                }
            } else {
                cliente = request.getSession().getAttribute("sub_grupo").toString();
            }

            String codClienteBco = form.getCodClienteBco();
        
            String data = request.getParameter("chk");
            int y = data.lastIndexOf("-");
            int x = data.indexOf("*");
            int z = data.indexOf("!");
            String cta = data.substring(0, y);
            String tipoCta = data.substring(y + 1, x);
            String tipoUni = data.substring(x + 1, z);
            String refe = data.substring(z + 1);            
            List listadoPuntosPendienteCliente = 
                servicioHermetic.getPuntosPendienteCliente(cliente, 
                                                                 codClienteBco, 
                                                                 cta);
            if (listadoPuntosPendienteCliente != null) {
                int tam = listadoPuntosPendienteCliente.size();
                for (int i = 0; i < tam; i++) {
                    PuntoBean bean = new PuntoBean();
                    bean = (PuntoBean)listadoPuntosPendienteCliente.get(i);
                    servicioHermetic.insertaPuntoReferencia(cliente, 
                                                                  codClienteBco, 
                                                                  cta, "0", 
                                                                  bean.getCodPunto());
                }
            }

            List listadoReferencia = 
                servicioHermetic.getPuntosReferencia(cliente, 
                                                           codClienteBco, cta);
            if (listadoReferencia != null) {
                //request.setAttribute("listadoReferencia", listadoReferencia);
                model.put("listadoReferencia", listadoReferencia);
            }
            form.setCodClienteBco(codClienteBco);
            form.setDesClienteBco(form.getDesClienteBco());
            form.setNcuenta(cta);


            form.setTcuenta(tipoCta);
            form.setCliente(cliente);
    
            model.put(FORM_KEY,form);

        } catch (Exception e) {
            e.printStackTrace();
            return FORM_ERROR_VIEW;
        }
        return FORM_CONF_NROS_CTA_ASIGNAR_VIEW;
    }

    @RequestMapping(params="accion=inactivar")
    private String inactivar (ModelMap model,@ModelAttribute(FORM_KEY) HMF1002Form form, HttpServletRequest request) throws Exception {    
    
        HttpSession session = request.getSession(false);        
        if (session.getAttribute("usuario") == null)
            return FORM_SESSION_FINISH;

        List listaTransacciones = (List)session.getAttribute("listaMenu4");
        if (!Util.validaAccesoOpcion(listaTransacciones, 
                                     ConstantesHermetic.CONFIG_NUMEROS_CUENTA)) {
            return FORM_ACCESS_NULL_VIEW;
        }       
        form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);
        //int accionMapa = 4;

        String cliente = null;
        String clientegrupo = form.getGrupoCliente();
        String gene = request.getSession().getAttribute("general").toString();
        if (gene.equals("1")) {
            if (clientegrupo != null) {
                cliente = form.getGrupoCliente();
            } else {
                cliente = 
                        request.getSession().getAttribute("cliente").toString();
            }
        }

        else {
            cliente = 
                    request.getSession().getAttribute("sub_grupo").toString();
        }

        String codClienteBco = form.getCodClienteBco();

        try {
            String sel = request.getParameter("chk");
            int y = sel.lastIndexOf("-");
            String cta = sel.substring(0, y);

            CuentaBean cuentaBean = new CuentaBean();
            cuentaBean.setBanco(cliente);
            cuentaBean.setClienteBanco(codClienteBco);
            cuentaBean.setCodCuenta(cta);

            servicioHermetic.actualizarCuenta("2", cuentaBean);

            form.setCodClienteBco(codClienteBco);
            form.setDesClienteBco(form.getDesClienteBco());
            List listadoClientes = 
                servicioHermetic.getMantenCuentas(gene, codClienteBco, 
                                                        cliente, cliente, 
                                                        cliente, "0");
            if (listadoClientes != null) {
                //request.setAttribute("listadoClienteCuenta", listadoClientes);
                model.put("listadoClienteCuenta", listadoClientes);
            }
    
            model.put(FORM_KEY,form);

        } catch (Exception e) {
            e.printStackTrace();
            return FORM_ERROR_VIEW;
        }
        return FORM_CONF_NROS_CTA_VIEW;
    }

    @RequestMapping(params="accion=inactivas")
    private String inactivas (ModelMap model,@ModelAttribute(FORM_KEY) HMF1002Form form, HttpServletRequest request) throws Exception {    
    
        HttpSession session = request.getSession(false);        
        if (session.getAttribute("usuario") == null)
            return FORM_SESSION_FINISH;

        List listaTransacciones = (List)session.getAttribute("listaMenu4");
        if (!Util.validaAccesoOpcion(listaTransacciones, 
                                     ConstantesHermetic.CONFIG_NUMEROS_CUENTA)) {
            return FORM_ACCESS_NULL_VIEW;
        }       
        form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);
        //int accionMapa = 3;

        String cliente = null;
        String clientegrupo = form.getGrupoCliente();
        String gene = request.getSession().getAttribute("general").toString();
        if (gene.equals("1")) {
            if (clientegrupo != null) {
                cliente = form.getGrupoCliente();
            } else {
                cliente = 
                        request.getSession().getAttribute("cliente").toString();
            }
        }

        else {
            cliente = 
                    request.getSession().getAttribute("sub_grupo").toString();
        }

        String codClienteBco = form.getCodClienteBco();

        try {
            List listadoClientes = 
                servicioHermetic.getMantenCuentas(gene, codClienteBco, 
                                                        cliente, cliente, 
                                                        cliente, "1");
            if (listadoClientes != null) {
                //request.setAttribute("listadoClienteCuentaI", listadoClientes);
                model.put("listadoClienteCuentaI", listadoClientes);
            }
            form.setCodClienteBco(codClienteBco);
            form.setDesClienteBco(form.getDesClienteBco());
    
            model.put(FORM_KEY,form);

        } catch (Exception e) {
            e.printStackTrace();
            return FORM_ERROR_VIEW;
        }
        return FORM_CONF_NROS_CTA_INACTIVAS_VIEW;
    }

    @RequestMapping(params="accion=verDetalle")
    private String verDetalle (ModelMap model,@ModelAttribute(FORM_KEY) HMF1002Form form, HttpServletRequest request) throws Exception {    
    
        HttpSession session = request.getSession(false);        
        if (session.getAttribute("usuario") == null)
            return FORM_SESSION_FINISH;

        List listaTransacciones = (List)session.getAttribute("listaMenu4");
        if (!Util.validaAccesoOpcion(listaTransacciones, 
                                     ConstantesHermetic.CONFIG_NUMEROS_CUENTA)) {
            return FORM_ACCESS_NULL_VIEW;
        }       
        form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);
        
        try {
            //int accionMapa = 9;
            
            List listado = servicioHermetic.getPuntosReferencia(form.getCodClieGrup(),form.getCodClieBanc(),form.getCodCnta());
            if(listado!=null){
                //request.setAttribute("listadoCodR",listado);
                model.put("listadoCodR",listado);
            }
            //request.setAttribute("cliente",cliente);
            //request.setAttribute("cuenta",codCuenta);
            model.put("cliente",form.getCodClieGrup());
            model.put("cuenta",form.getCodCnta());
    
            model.put(FORM_KEY,form);

        } catch (Exception e) {
            e.printStackTrace();
            return FORM_ERROR_VIEW;
        }
        return FORM_CONF_NROS_CTA_DET_VIEW;
    }

    @RequestMapping(params="accion=cancelar")
    private String cancelar (ModelMap model,@ModelAttribute(FORM_KEY) HMF1002Form form, HttpServletRequest request) throws Exception {    
    
        HttpSession session = request.getSession(false);        
        if (session.getAttribute("usuario") == null)
            return FORM_SESSION_FINISH;

        List listaTransacciones = (List)session.getAttribute("listaMenu4");
        if (!Util.validaAccesoOpcion(listaTransacciones, 
                                     ConstantesHermetic.CONFIG_NUMEROS_CUENTA)) {
            return FORM_ACCESS_NULL_VIEW;
        }       
        form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);
        
        try {          
    
            model.put(FORM_KEY,form);

        } catch (Exception e) {
            e.printStackTrace();
            return FORM_ERROR_VIEW;
        }
        return FORM_CONF_NROS_CTA_VIEW;
    }

    @RequestMapping(params="accion=guardar")
    private String guardar (ModelMap model,@ModelAttribute(FORM_KEY) HMF1002Form form, HttpServletRequest request) throws Exception {    
    
        HttpSession session = request.getSession(false);        
        if (session.getAttribute("usuario") == null)
            return FORM_SESSION_FINISH;

        List listaTransacciones = (List)session.getAttribute("listaMenu4");
        if (!Util.validaAccesoOpcion(listaTransacciones, 
                                     ConstantesHermetic.CONFIG_NUMEROS_CUENTA)) {
            return FORM_ACCESS_NULL_VIEW;
        }       
        form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);
        
        //int accionMapa = 5;
        try {
            String cliente = null;
            String clientegrupo = form.getGrupoCliente();
            String numeroCuenta = form.getNcuenta();
            String gene = 
                request.getSession().getAttribute("general").toString();
            if (gene.equals("1")) {
                if (clientegrupo != null) {
                    cliente = form.getGrupoCliente();
                } else {
                    cliente = 
                            request.getSession().getAttribute("cliente").toString();
                }
            } else {
                cliente = 
                        request.getSession().getAttribute("sub_grupo").toString();
            }

            String codClienteBco = form.getCodClienteBco();

            if (form.getAux().equals("n")) {
                int val = 0;
                val = 
        servicioHermetic.existeClienteCuenta(cliente, form.getCodClienteBco(),
                                           numeroCuenta);
                CuentaBean cuenta = new CuentaBean();
                cuenta.setCliente(cliente);
                cuenta.setBanco(cliente);
                cuenta.setClienteBanco(form.getCodClienteBco());
                cuenta.setNumero(numeroCuenta);
                cuenta.setUsuario(request.getSession().getAttribute("usuario").toString());
                cuenta.setTipoUniMon(form.getMoneda());
                cuenta.setReferencia(form.getReferencia());
                cuenta.setTipo(form.getTcuenta());
                if (val == 0)
                    servicioHermetic.actualizarCuenta("0", cuenta);
                else
                    servicioHermetic.actualizarCuenta("3", cuenta);
            }

            if (form.getAux().equals("m")) {
                CuentaBean cuenta = new CuentaBean();
                cuenta.setCliente(cliente);
                cuenta.setBanco(cliente);
                cuenta.setClienteBanco(form.getCodClienteBco());
                cuenta.setNumero(numeroCuenta);
                cuenta.setTipo(form.getTcuenta());
                servicioHermetic.actualizarCuenta("1", cuenta);
            }
            List listadoClientes = 
                servicioHermetic.getMantenCuentas(gene, codClienteBco, 
                                                        cliente, cliente, 
                                                        cliente, "0");
            if (listadoClientes != null) {
                //request.setAttribute("listadoClienteCuenta", listadoClientes);
                model.put("listadoClienteCuenta", listadoClientes);
            }
            form.setCodClienteBco(codClienteBco);
            form.setDesClienteBco(form.getDesClienteBco());
            if(form.getChkTipo()!=null&&form.getChkTipo().equalsIgnoreCase(ConstantesHermetic.CTE_TIPO_CODIGO_DE_REFERENCIA))
                insertaPorCodReferencia(request,form);
            else if(form.getChkTipo()!=null&&form.getChkTipo().equalsIgnoreCase(ConstantesHermetic.CTE_TIPO_COPIA_DE_CUENTA))
                insertaPorCopiaCuenta(request,form);
            form.setCodigoReferencia("");
            form.setCuentaBase("");
            model.put(FORM_KEY,form);

        } catch (Exception e) {
            e.printStackTrace();
            return FORM_ERROR_VIEW;
        }
        return FORM_CONF_NROS_CTA_VIEW;
    }

    private void insertaPorCodReferencia(HttpServletRequest request, HMF1002Form form)    {
        String cliente = null;
        if(form.getCodigoReferencia()==null)
            form.setCodigoReferencia("0");
        String clientegrupo = form.getGrupoCliente();
        String numeroCuenta = form.getNcuenta();
        String gene = 
            request.getSession().getAttribute("general").toString();
        if (gene.equals("1")) {
            if (clientegrupo != null) {
                cliente = form.getGrupoCliente();
            } else {
                cliente = 
                        request.getSession().getAttribute("cliente").toString();
            }
        } else {
            cliente = 
                    request.getSession().getAttribute("sub_grupo").toString();
        }

        String codClienteBco = form.getCodClienteBco();
        String cta = numeroCuenta;
        List listadoPuntosPendienteCliente = 
            servicioHermetic.getPuntosPendienteCliente(cliente, 
                                                             codClienteBco, 
                                                             cta);
        if (listadoPuntosPendienteCliente != null) {
            int tam = listadoPuntosPendienteCliente.size();
            for (int i = 0; i < tam; i++) {
                PuntoBean bean = new PuntoBean();
                bean = (PuntoBean)listadoPuntosPendienteCliente.get(i);
                servicioHermetic.insertaPuntoReferencia(cliente, 
                                                              codClienteBco, 
                                                              cta, form.getCodigoReferencia(), 
                                                              bean.getCodPunto());
            }
        }

    }
    
    private void insertaPorCopiaCuenta(HttpServletRequest request, HMF1002Form form ) {
            String cliente = null;
            String clientegrupo = form.getGrupoCliente();
            String numeroCuenta = form.getNcuenta();
            String gene = 
                request.getSession().getAttribute("general").toString();
            if (gene.equals("1")) {
                if (clientegrupo != null) {
                    cliente = form.getGrupoCliente();
                } else {
                    cliente = 
                            request.getSession().getAttribute("cliente").toString();
                }
            } else {
                cliente = 
                        request.getSession().getAttribute("sub_grupo").toString();
            }

            String codClienteBco = form.getCodClienteBco();
            String cta = numeroCuenta;
            List listadoPuntosPendienteCliente = 
                servicioHermetic.getPuntosPendienteCliente(cliente, 
                                                                 codClienteBco, 
                                                                 form.getCuentaBase());
            List listadoReferencia  =  servicioHermetic.getPuntosReferencia(cliente, 
                                                                           codClienteBco, form.getCuentaBase());
            if (listadoReferencia != null) {
                int tam = listadoReferencia.size();
                for (int i = 0; i < tam; i++) {
                    PuntoBean bean = new PuntoBean();
                    bean = (PuntoBean)listadoReferencia.get(i);
                    servicioHermetic.insertaPuntoReferencia(cliente, 
                                                                  codClienteBco, 
                                                                  cta, bean.getCodCliente(), 
                                                                  bean.getCodPunto());
                }
            }

            }    


    @RequestMapping(params="accion=activa")
    private String activa (ModelMap model,@ModelAttribute(FORM_KEY) HMF1002Form form, HttpServletRequest request) throws Exception {    
    
        HttpSession session = request.getSession(false);        
        if (session.getAttribute("usuario") == null)
            return FORM_SESSION_FINISH;

        List listaTransacciones = (List)session.getAttribute("listaMenu4");
        if (!Util.validaAccesoOpcion(listaTransacciones, 
                                     ConstantesHermetic.CONFIG_NUMEROS_CUENTA)) {
            return FORM_ACCESS_NULL_VIEW;
        }       
        form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);
        
        //int accionMapa = 4;

        String cliente = null;
        String clientegrupo = form.getGrupoCliente();
        String gene = request.getSession().getAttribute("general").toString();
        if (gene.equals("1")) {
            if (clientegrupo != null) {
                cliente = form.getGrupoCliente();
            } else {
                cliente = 
                        request.getSession().getAttribute("cliente").toString();
            }
        }

        else {
            cliente = 
                    request.getSession().getAttribute("sub_grupo").toString();
        }

        String codClienteBco = form.getCodClienteBco();

        try {
            String sel = request.getParameter("chk");
            int y = sel.lastIndexOf("-");
            String cta = sel.substring(0, y);

            CuentaBean cuentaBean = new CuentaBean();
            cuentaBean.setBanco(cliente);
            cuentaBean.setClienteBanco(codClienteBco);
            cuentaBean.setCodCuenta(cta);
            servicioHermetic.actualizarCuenta("3", cuentaBean);

            form.setCodClienteBco(codClienteBco);
            form.setDesClienteBco(form.getDesClienteBco());
            List listadoClientes = 
                servicioHermetic.getMantenCuentas(gene, codClienteBco, 
                                                        cliente, cliente, 
                                                        cliente, "0");
            if (listadoClientes != null) {
                //request.setAttribute("listadoClienteCuenta", listadoClientes);
                model.put("listadoClienteCuenta", listadoClientes);
            }
            model.put(FORM_KEY,form);

        } catch (Exception e) {
            e.printStackTrace();
            return FORM_ERROR_VIEW;
        }
        return FORM_CONF_NROS_CTA_VIEW;
    }


    @RequestMapping(params="accion=greferencia")
    private String greferencia (ModelMap model,@ModelAttribute(FORM_KEY) HMF1002Form form, HttpServletRequest request) throws Exception {    
    
        HttpSession session = request.getSession(false);        
        if (session.getAttribute("usuario") == null)
            return FORM_SESSION_FINISH;

        List listaTransacciones = (List)session.getAttribute("listaMenu4");
        if (!Util.validaAccesoOpcion(listaTransacciones, 
                                     ConstantesHermetic.CONFIG_NUMEROS_CUENTA)) {
            return FORM_ACCESS_NULL_VIEW;
        }       
        form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);
        
        //int accionMapa = 5;
        try {
            String cliente = null;
            String clientegrupo = form.getGrupoCliente();
            String gene = 
                request.getSession().getAttribute("general").toString();
            if (gene.equals("1")) {
                if (clientegrupo != null) {
                    cliente = form.getGrupoCliente();
                } else {
                    cliente = 
                            request.getSession().getAttribute("cliente").toString();
                }
            } else {
                cliente = 
                        request.getSession().getAttribute("sub_grupo").toString();
            }

            String codClienteBco = form.getCodClienteBco();
            String cta = form.getNcuenta();

            List listadoReferencia = servicioHermetic.getPuntosReferencia(cliente, codClienteBco, cta);
            
            String[] codigoRefLista = request.getParameterValues("codigoReferencia");
            
            if (listadoReferencia != null && codigoRefLista!=null && codigoRefLista.length > 0 ) {
                int tam = listadoReferencia.size();
                String codigoPunto;
                String valorPunto;
                for (int i = 0; i < tam; i++) {
                    PuntoBean punto = new PuntoBean();
                    punto = (PuntoBean)listadoReferencia.get(i);
                    codigoPunto = punto.getCodPunto();
                    valorPunto = codigoRefLista[i];//request.getParameter(codigoPunto);
                    //System.out.println(valorPunto);
                    servicioHermetic.modificaPuntoReferencia(cliente, 
                                                                   codClienteBco, 
                                                                   cta, 
                                                                   valorPunto, 
                                                                   codigoPunto);
                }
            }

            List listadoClientes = 
                servicioHermetic.getMantenCuentas(gene, codClienteBco, 
                                                        cliente, cliente, 
                                                        cliente, "0");
            if (listadoClientes != null) {
                //request.setAttribute("listadoClienteCuenta", listadoClientes);
                model.put("listadoClienteCuenta", listadoClientes);
            }
            form.setCodClienteBco(codClienteBco);
            form.setDesClienteBco(form.getDesClienteBco());    
    
            model.put(FORM_KEY,form);

        } catch (Exception e) {
            e.printStackTrace();
            return FORM_ERROR_VIEW;
        }
        return FORM_CONF_NROS_CTA_VIEW;
    }
    
}
